<?php

require_once 'src/db/dbConnection.php';

class aRelatorios extends dbConnection {

    protected $sql = "";

    /**
     * Os nomes dos servicos que foram vendidos, sua quantidade, o total de $$ 
     * e qual o funcionario que vendeu em uma determinanda data.
     * @return type array com resultados
     */
    public function todosNomesServicosESuaRespectiva($dtini, $difim) {
        $sql = "SELECT IFNULL(f.nome, 'sem identificação') AS func, 
            COUNT(sc.idservico) AS quant_serv, s.nome AS servico,  
            Concat('R$ ', Replace (Replace (Replace (FORMAT(IFNULL(SUM(sc.preco), 0), 2), '.', '|'), ',', '.'), '|', ',')) AS total
            FROM venda v
                JOIN funcionario f ON f.idfuncionario = v.idfuncionario
                JOIN servicosComprados sc ON v.idvenda = sc.idvenda       
                JOIN servico s ON sc.idservico = s.idservico
            WHERE
                v.data BETWEEN '" . $dtini . "' AND '" . $difim . "'
            GROUP BY f.nome, s.idservico
            ORDER BY f.nome, s.idservico";
        return $this->RunSelect($sql);
    }

    /**
     * Todas as raças de cachorro existente no sistema que comecem por uma letra
     * @return type array com resultados
     */
    public function todasRacasCachorroFiltrandoPorLetraInicial($nomePet) {
        $sql = "SELECT DISTINCT(p.raca)
                FROM pet p
                WHERE
                p.raca LIKE '".$nomePet."%'
                ORDER BY p.raca";
        return $this->RunSelect($sql);
    }

    /**
     * Quais as racas de cachorro e gatos existente no sistema que tenham gasto
     * maior que a média por venda ordenado em ordem descrescente
     * @return type array com resultados
     */
    public function rel3() {
        $sql = "SELECT p.raca, SUM(v.total) AS total
                FROM pet p
                JOIN venda v USING(idpet)
                WHERE
                p.especie IN ('cachorro', 'gato')
                GROUP BY p.raca
                HAVING total > (SELECT AVG(v.total) FROM venda v)
                ORDER BY total DESC";
        return $this->RunSelect($sql);
    }

    /**
     * Listar todos os nomes, login, senha de clientes e funcionarios
     * afim de verificar se as senhas estão encriptografadas identificando
     * se são clientes ou funcionarios
     * @return type array com resultados
     */
    public function rel4() {
        $sql = "SELECT f.nome AS nome, f.login AS login, f.senha AS senha, 'funcionario' AS tipo
                FROM funcionario f
                UNION
                SELECT c.nome AS nome, c.login AS login, c.senha AS senha, 'cliente' AS tipo
                FROM cliente c
                ORDER BY tipo, nome";
        return $this->RunSelect($sql);
    }

    /**
     * Verificar qual funcionario não vendeu nada
     * @return type array com resultados
     */
    public function rel5() {
        $sql = "SELECT f.nome, f.telefone, f.endereco, f.funcao, 
                Concat('R$ ', Replace (Replace (Replace (Format(f.salario, 2), '.', '|'), ',', '.'), '|', ',')) AS salario
                FROM funcionario f
                WHERE NOT EXISTS(SELECT * 
                FROM venda v 
                WHERE f.idfuncionario = v.idfuncionario)";
        return $this->RunSelect($sql);
    }

}

?>